#ifndef __MARS_GP_BUFFER_OBJECT_H__
#define __MARS_GP_BUFFER_OBJECT_H__

#include "MarsObject.h"
#include "MarsSharedPtr.h"
#include "MarsGPContext.h"

namespace GP
{

class BufferObject : public Object, public RefCountObject
{
public:
									BufferObject( const ContextRef& context );
	virtual							~BufferObject();

	virtual bool					Create( Core::uint32 size ) = 0;
	virtual void					Destroy() = 0;
	virtual bool					Bind( Core::uint8* pBuffer, Core::uint32 pBufferSize ) = 0;

protected:
	ContextRef						m_context;
	bool							m_bInit;
};

inline BufferObject::BufferObject( const ContextRef& context )
	: m_context( context )
	, m_bInit( false )
{

}

inline BufferObject::~BufferObject()
{

}

} // end of namespace GP

#endif // end of #ifndef __MARS_GP_BUFFER_OBJECT_H__